24859
21841
Αυτή η ερώτηση έχει ήδη απαντήσεις εδώ:
Express js - δεν είναι δυνατή η ανακατεύθυνση
(4 απαντήσεις)
Κλειστό πριν από 7 χρόνια.
Χρησιμοποιώ passportjs με μεσαίο λογισμικό παρακάτω. Υποθέτουμε να ελέγξουμε εάν ο χρήστης συνδέεται όταν ζητά συγκεκριμένα πράγματα. Εάν δεν είναι συνδεδεμένος, θα πρέπει να ανακατευθυνθεί στη σελίδα σύνδεσης.
Έχω μια διαδρομή αιτήματος ως εξής:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Αυτή η διαδρομή θα καλείται όταν ο χρήστης προσπαθεί να ενημερώσει έναν πόρο που ονομάζεται Fantasy Team στον ιστότοπο
Το author.requiresLogin είναι ένα μεσαίο λογισμικό ως εξής:
export.requiresLogin = συνάρτηση (req, res, next) {
εάν (req.isAuthenticated ()) {
επιστροφή επόμενη ()
}
επιστροφή res.redirect ("/ signin");
};
Μετά τη σύνδεση στον χρήστη μου, προσομοίωσα τη λήξη περιόδου σύνδεσης διαγράφοντας το cookie περιόδου σύνδεσης. Στη συνέχεια μέσω του ιστότοπου έκανα ένα αίτημα PUT '/ fantasyteams / 123' για ενημέρωση της ομάδας φαντασίας 123.
Το fantasyteams.update είναι απλώς μια λειτουργία αποθήκευσης mongodb / mongoose:
export.update = συνάρτηση (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (συνάρτηση (err) {
res.jsonp (fantasyteam);
});
};
Όπως ήταν αναμενόμενο, ο χειριστής διαδρομής (app.put ...) παραπάνω έπιασε το αίτημα, διαβιβάστε το στο μεσαίο λογισμικό auth.requiresLogin για να ελέγξετε εάν ο χρήστης είναι συνδεδεμένος. Έτσι αποδεικνύεται ότι ο χρήστης δεν έχει συνδεθεί από τότε που έχω διαγράψει το cookie συνεδρίας του. Το res.redirect καλείται όπως αναμενόταν. Ωστόσο, ο ιστότοπος δεν ανακατευθύνει στη σελίδα σύνδεσης. Αυτό το βλέπω στα αρχεία καταγραφής εντολών node.js:
PUT / είσοδος 404 328ms
Τι εκανα λαθος? 
Φαίνεται ότι το πρόβλημα είναι ότι δεν έχετε διαχειριστή διαδρομής για PUT / signin. Το αρχικό αίτημα ήταν ένα put, οπότε όταν ανακατευθύνει εξακολουθεί να αποτελεί μέρος του ίδιου αιτήματος «put» από το πρόγραμμα περιήγησης. Απλώς προσθέστε ένα χειριστή για το put / post / οτιδήποτε με το app.all ('/ signin')
3
|
Δεν είναι η απάντηση που ψάχνετε; Περιηγηθείτε σε άλλες ερωτήσεις με ετικέτα node.js session cookies express passport.js ή κάντε τη δική σας ερώτηση